// API - 访问用户控制
import { http } from '@/utils/http'

export interface ApiUserTokenRes extends HttpResponse {
  data: {
    /** 访问 `token` */
    accessToken: string
    /** 用于调用刷新`accessToken`的接口时所需的`token` */
    refreshToken: string
    /** `accessToken`的过期时间，支持所有格式时间（包括时间戳） */
    expires: Date | number | string
  }
}

export interface ApiUserInfoRes extends HttpResponse {
  data: {
    /** 用户ID */
    uid: number
    /** 用户名 */
    username: string
    /** 昵称 */
    nickname: string
    /** 手机号 */
    phone: string
    /** 邮箱 */
    email: string
    /** 备注信息 */
    remark: string
  }
}

/**
 * 用户登录（手机）
 *
 * @param data 请求参数
 * @returns
 */
export const userPhoneLogin = (data?: object) => {
  return http.request<ApiUserTokenRes>('post', '/access/login/phone', {
    data,
  })
}

/**
 * 用户登录（账密）
 *
 * @param data 请求参数
 * @returns
 */
export const userAccountLogin = (data?: object) => {
  return http.request<ApiUserTokenRes>('post', '/access/login/account', {
    data,
  })
}

/**
 * 发送登录验证
 *
 * @param data 请求参数
 * @returns
 */
export const sendUserLoginSms = (data?: object) => {
  return http.request<HttpResponse>('post', '/access/login/send-sms', {
    data,
  })
}

/**
 * 获取已登录用户信息
 *
 * @returns
 */
export const getUserInfo = () => {
  return http.request<ApiUserInfoRes>('get', '/access/info')
}

/**
 * 刷新Token
 *
 * @param data 请求参数
 * @returns
 */
export const refreshAccessToken = (data?: object) => {
  return http.request<ApiUserTokenRes>(
    'post',
    '/access/refresh-token',
    {
      data,
    },
    { quite: true },
  )
}
